package com.spring.demo.untils.dto;

import io.swagger.annotations.ApiModelProperty;
import jakarta.validation.constraints.NotEmpty;
import lombok.Data;
import org.jetbrains.annotations.NotNull;

import java.io.Serializable;
import java.util.List;

/**
 * @Author doudou.wk
 * @Date 2022/7/20
 * @Description Bimis-血袋信息同步入参
 **/
@Data
public class HisBloodBagStatusRequest implements Serializable {

    private static final long serialVersionUID = 6629622579978171709L;
    /**
     * 机构 ID
     */
    @NotNull
    @ApiModelProperty(value = "机构 ID", required = true)
    private Long orgId;

    /**
     * 院区 ID
     */
    @NotNull
    @ApiModelProperty(value = "院区 ID", required = true)
    private Long campusId;

    /**
     * 血袋号
     */
    @NotEmpty
    @ApiModelProperty(value = "血袋号", required = true)
    private List<HisSimpleBloodInfoDTO> bloodBagInfoList;

    /**
     * 诊疗记录 id
     */
    @NotNull
    @ApiModelProperty(value = "诊疗记录 id", required = true)
    private Long healthcareRecordId;

    /**
     * 医嘱号（未发血前，医嘱号必传）
     */
    @ApiModelProperty(value = "医嘱号（未发血前，医嘱号必传）", required = false)
    private String doctorOrderNo;

    /**
     * 血袋状态
     *
     * 血袋接收、开始输血两个节点需要传复核人
     */
    @NotNull
    @ApiModelProperty(value = "血袋状态", required = true)
    private Integer operationType;

    /**
     * 操作部门 ID
     */
    @NotNull
    @ApiModelProperty(value = "操作部门 ID", required = true)
    private Long operateDeptId;

    /**
     * 操作部门名称
     */
    @NotNull
    @ApiModelProperty(value = "操作部门名称", required = true)
    private String operateDeptName;

    /**
     * 操作人 ID
     */
    @NotNull
    @ApiModelProperty(value = "操作人 ID", required = true)
    private Long operateUserId;

    /**
     * 操作人工号
     */
    @ApiModelProperty(value = "操作人工号", required = false)
    private String operateUserNo;

    /**
     * 操作人名称
     */
    @ApiModelProperty(value = "操作人名称", required = true)
    private String operateUserName;

    /**
     * 操作人职称
     */
    @ApiModelProperty(value = "操作人职称", required = false)
    private String operateUserJob;

    /**
     * 操作时间
     */
    @NotNull
    private String operateTime;

    /**
     * 复核人 ID
     */
    @ApiModelProperty(value = "复核人 ID", required = false)
    private Long recheckUserId;

    /**
     * 复核人工号
     */
    @ApiModelProperty(value = "复核人工号", required = false)
    private String recheckUserNo;

    /**
     * 复核人名称
     */
    @ApiModelProperty(value = "复核人名称", required = false)
    private String recheckUserName;

    /**
     * 复核人职称
     */
    @ApiModelProperty(value = "复核人职称", required = false)
    private String recheckUserJob;

    /**
     * 复核时间
     */
    @ApiModelProperty(value = "复核时间", required = false)
    private String recheckTime;

    // /**
    //  * 血液接收量（血袋接收时必传）
    //  */
    // @Digits(integer = 10, fraction = 2, message = "血量精度应为两位小数")
    // // @ApiModelProperty(value = "血液接收量（血袋接收时必传）", required = true)
    // private BigDecimal receiveBloodVolume;

    /**
     * 备注
     */
    @ApiModelProperty(value = "", required = false)
    private String remark;

    /**
     * 停止原因
     */
    @ApiModelProperty(value = "停止原因", required = false)
    private String stopReason;

    /**
     * 终止原因
     */
    @ApiModelProperty(value = "弃血原因", required = false)
    private String abandonReason;

    /**
     * 操作来源
     */
    @ApiModelProperty(value = "操作来源", required = true)
    private Integer source;

}
